package com.zwps.common.core.exception.status;

import lombok.Getter;

@Getter
public class CommonExceptionStatus implements InterfaceCommonExceptionStatus {

	private final int code;
	private final String describe;

	public CommonExceptionStatus(Integer code, String describe) {
		this.code = code;
		this.describe = describe;
	}

    public static boolean serveExceptionStatus(Integer code) {
        return code >= 1 && code <= 4999;
    }
	
	/**************
	 * 以下状态码表示具体发生的消息对用户是不需要了解的不可修复的错误（主要原因代码未处理导致的意外情况）取值范围1-4999
	 **/
	
	public static final CommonExceptionStatus AUTHENTICATION_FAILURE = new CommonExceptionStatus(401, "登录验证失败");

	public static final CommonExceptionStatus PARAMETER_ERROR = new CommonExceptionStatus(402, "参数格式错误");
	
    public static final CommonExceptionStatus FILE_SIZE_EXCEEDS_MAXIMUM_LIMIT = new CommonExceptionStatus(403,
            "文件大小超出最大限制");
	
	public static final CommonExceptionStatus SERVE_ERROR = new CommonExceptionStatus(500, "服务出现错误");

	public static final CommonExceptionStatus UNSUPPORTED_REQUEST_METHOD = new CommonExceptionStatus(501, "不支持的请求方式");

	/**
	 * 以上状态码表示具体发生的消息对用户是不需要了解的不可修复的错误（主要原因代码未处理导致的意外情况）取值范围1-4999
	 **************/

	/**************
	 * 以下状态码表示具体发生的消息对用户是可见的（主要原因人为操作出现的）取值范围5000-10000
	 **/
	
	// 取值范围5000-9999是公共的业务状态（用户操作间接操作导致的或者提示信息包含多种情况的）
	public static final CommonExceptionStatus USER_ACTION_SUCCESS = new CommonExceptionStatus(5000, "操作成功");
	
	public static final CommonExceptionStatus USER_ACTION_FAILURE = new CommonExceptionStatus(5001, "操作失败");
	
	public static final CommonExceptionStatus DATA_NOT_FOUND = new CommonExceptionStatus(5002, "数据未找到");
	
	public static final CommonExceptionStatus DUPLICATE_DATA = new CommonExceptionStatus(5003, "重复的数据");

	// 10000-10999是公共业务异常（用户操作直接操作导致的或者提示信息明确的）
	public static final CommonExceptionStatus PARAMETER_NOT_MEET_REQUIRE = new CommonExceptionStatus(10001, "参数不符合要求");

	/**
	 * 以上状态码表示具体发生的消息对用户是可见的
	 **************/

}
